
        <html>
			<head>
			     <title>未来安全趋势：基于软件定义网的移动防御 - 小飞</title>
				 <meta http-equiv="content-type" content="text/html; charset=UTF-8">
			</head>
			<body>
				<h1>原文地址:<a href="http://drops.wooyun.org/tips/4966">http://drops.wooyun.org/tips/4966</a></h1>
				
      <p>
        <h1>0x00 前言</h1>

<hr />

<p>如今的企业内网，大多是都是建立在静态体系上的，所以那些内网攻击框架，工具，也是为静态网络度身定做。如Nmap,蠕虫病毒，DDOS，Cain等。那么如果让我们的防御体系转向，化静为动，会为内网安全带来什么呢？</p>

<h1>0x01 背景</h1>

<hr />

<p>软件定义网络（SDN）是由美国斯坦福大学clean slate研究组提出的一种新型网络架构。简而言之就是，利用SDN技术将控制逻辑（控制器）从网络交换设备中“分离”了出来。当控制器是可编程的时候，我们就能通过控制器给网络设备的FLOW TABLE(流表)进行修改，让路由设备灵活地达到我们的需求。</p>

<p>而本文说的是<code>基于SDN的MTD技术</code>，这个MTD是MOving Target Defence（移动防御技术）的缩写。翻译过来就是基于软件定义网络的移动防御技术</p>

<p>移动目标防御技术是近年来美国科学技术委员会提出的网络空间“改变游戏规则”的革命性技术之一。今天我要介绍的就是将MTD通过SDN网络来实现。</p>

<p>现在大部分内网扫描工具，如Nmap，x-scan的扫描机制都大同小异，所以，我们今天就以著名的Nmap为例，讲解对抗Nmap信息收集的最新保护策略和技术展望。</p>

<!--more-->

<h1>0x02 SDN下的移动防御技术</h1>

<hr />

<p>移动防御技术（MTD）是相对于传统的静态网络提出的新型防御策略，它的目的在于混淆网络环境，让内网情况“亦真亦假” 最后达到阻止，拖延内网中恶意流成员攻击的目的。</p>

<p>我们来看看一个攻击者(小A)是如何一步步走向MTD布下的迷魂阵吧。</p>

<p>下面分成了三个部分，分别用主机存活性的随机（A），软件版本信息的随机(B)，IP地址的随机（C）来保护这个SDN控制下的内网</p>

<h2>Step A 网络踩点,扫描</h2>

<hr />

<p>在大多数内网渗透过程中，攻击的第一步就是研究攻击面，试图找出弱点和漏洞，这种踩点就包括识别存在已知漏洞的服务，或是扫描整个网段来找出同一个内网中的存活主机（用来传播蠕虫），用基于SDN的移动防御技术可以阻止这种踩点扫描让攻击成果显著减少。</p>

<p>大多是网络扫描工具都是通过ICMP，TCP或UDP扫描来完成。ICMP包的作用用来确认目标是否可连接可到达。TCP,UDP端口扫描能用来识别目标上运行着哪些服务。</p>

<p>这些扫描行为的应答（TCP RST,silent drop 或ICMP 不可达）也可能透露哪些服务被传输设备允许（过滤），另外IP包里面的TTL区段也被黑客用来识别靶机和目的地之间的节点距离。</p>

<p>于是，小A做好内网代理之后 执行了nmap -sP 192.168.1.0/24</p>

<p>基于SDN的路由设备能用来对抗这种网络扫描。 本文中，针对目标的非法通信是能够根据过滤规则被SDN设备发现并丢弃的，然后SDN设施还能生成不同的响应来迷惑攻击者，只有当通信是符合预编译好的过滤策略的时候，才能畅通无阻地经过路由器，要不然，充斥的将是来自SDN的欺骗。</p>

<p>接下来的伪代码向我们解释了SDN网络交换设备是怎样拦截，转发TCP包</p>

<pre><code>#!bash
Require: Probabilities PrSA &lt; PrA &lt; PrPA &lt; PrR &lt; 1 hash table action buffer ← NULL
while (new TCP packet p is received) do
  if (p is illegitimate traffic) then
    if (p.dest port not in action buffer) then
      r ← random real number ∈ [0, 1]
      store r in action buffer
    else
      r ← as in action buffer 
    end if
    switch (r)
      case r &lt; PrSA:
        respond with TCP SYN-ACK
      case r &lt; PrA:
        respond with TCP ACK
      case r &lt; PrPA:
        respond with TCP PUSH-ACK with random payload
      case r &lt; PrR:
        respond with TCP RST packet
      default:
        drop silently
      end switch 
     end if
end while
</code></pre>

<p>从代码里面能看出，针对每一个非法的TCP连接请求，响应信息是由SDN路由器直接响应的，而并没有到达目标。 这样一来，返回的端口开闭状况，主机存活状况其实完全是随机的，无疑起到迷惑攻击者的作用（试想小A向一个根本没有开启1433的主机进行MSSQL弱口令碰撞的场景）</p>

<h2>Step B 服务版本和系统指纹扫描</h2>

<hr />

<p>为了能够在内网里面能够利用一个已公布的软件漏洞，小A最开始要做的事情无疑是识别目标机上有哪些缺陷服务以及他们的版本（当然如果小A掌握了通杀的0day那就另当别论）。举个例子，小A如果想攻击一个运行这Apache Tomcat 2.x的服务器，他就会发起一个HTTP GET请求到这个服务器的web端口，然后根据服务器的响应，他就能判断服务器是不是跑着有漏洞的apache组件啦。 于是，他执行了nmap -A 192.168.1.x</p>

<p>那么在这种情况下，一旦服务器的组件版本不可判断，攻击面就会变宽，随之而来的结果就是增加攻击成本和攻击事件，让攻击更容易被（IPS）发现。</p>

<p>不同的服务会有不同的技术来发送自己的版本信息，比如HTTP服务器就会在HTTP header的HTTP 200 OK响应中加入自己的httpd守护进程版本。运用基于SDN的MTD技术，我们能让SDN设备防止真实版本信息的泄露，并且替换其成一个虚假的version信息发送给攻击者</p>

<p>下面是一段对抗OS fingerprinting（Nmap）扫描的MTD伪代码</p>

<pre><code>#!bash
while (new TCP packet p destined to target is received)do                          
  if (p is illegitimate traffic) then
    if (p has TCP SYN set) then
      s ← random 32-bit number
      respond with TCP SYN-ACK and s as the seq#
    else
      generate random payload and respond
    end if 
   end if
end while
</code></pre>

<p>除此之外，还需要提及的是，TCP,UDP 和ICMP的包也总会泄露对攻击产生帮助作用的信息。虽然现代操作系统已经有产生随机响应的机制，但TCP 序列号以及针对某些包的TCP ICMP UDP响应还是能被识别出目标运行的是什么操作系统。比如说一个linux的系统的随机TCP序列码的生成方式是和其他是系统不一样的。上面这段伪代码就描述了SDN的控制器是如何给非法的通信生成随机TCP响应和载荷。</p>

<h2>Step C 随机主机变换（RHM） #核心</h2>

<hr />

<p>其实从上文并不难发现，随机化是移动防御技术一个主要策略和手段，这是由于如果目标的ip在一直变化。或者说目标和攻击者之间的网络策略一直在发生改变，那么攻击难度实际上是显著上升的。所以，我们完全可以把这种随机化上升到ip地址这个层面来看，在这个层面上进行了MTD保护的网络，是可以很好抵御蠕虫攻击和DDOS攻击的。</p>

<p>本文的重点也是在于基于openflow的随机主机变换（OpenFlow Random Host Mutation)下面就简称OF-RHM。</p>

<p>OF-RHM机制说明白一点就是让后端主机的ip看起来是随机变化的，这个随机包括了地址随机和变换间隔随机两个方面。在这样的网络中，那些假定了内王的IP在一段有效时间（比如一个月）内是静态的攻击程序（绝大多数蠕虫病毒，DDOS攻击）都会失去作用。</p>

<p>我们来看看SDN实现ip随机的业务逻辑是怎样的</p>

<p><img src="http://static.wooyun.org/drops/20150225/2015022501502381667C4BEB796-9618-4EF1-BFE4-8DA904D4F92E.jpg" alt="enter image description here" /></p>

<p>OF-RHM需要两个客观条件：</p>

<p>一，IP变换对于后端主机应该是透明的，也就是说，OF-RHM应该让后端的真实ip（rIP）保持不变，但是主机之间的联系使用的应该是存活期很短的虚拟ip（vIP），vIP在一段间隔时间内就应该变化一次。 由于由vIP->rIP的转换是在SDN控制器所操纵的流表内进行的，而流表是完全有能力建立这种对应关系，所以完全不用担心内网主机之间不能通信这个问题。</p>

<p>二，这种IP变换应具有高不可预测性以及频率，让攻击者在摸清网络环境之前就发生一次变换，使攻击者始终处于迷惑状态。</p>

<p>说了 这么多其实并不够具体，我们用图解法来看看内网中主机通信到底是如何进行的。</p>

<p>根据研究，有两种主机通信办法</p>

<p>一：通过name进行通信</p>

<p>图解很清楚，这里我简单解释下。这里的DNS服务器是有NOX控制器实时更新的，保证v--r的转换</p>

<p><img src="http://static.wooyun.org/20150225/2015022501545288832.jpg" alt="enter image description here" /></p>

<p>二，通过rIP进行通信</p>

<p>通过rIP通信需要某些主机（认证主机）具有指定的几台的rIP（真实ip）所以，这种主机之间的通信一定程度上其实是伪随机的，不过，大可不必担心的，NOX 控制器里的认证过程完全能够规避风险，比如mysql服务器和web之间的认证关系是存储在NOX 控制器里的，所以这里WEB服务器就是认证主机了，然而，它就不能通过rIP访问到具有员工信息的oracle服务器</p>

<p><img src="http://static.wooyun.org/20150225/2015022501545367818.jpg" alt="enter image description here" /></p>

<p>相信你们能从上面的伪代码中看到，其实这些策略中相当重要的一环就是判断策略，来判断哪些是非法访问，哪些是能被服务器放行无阻的。其实判断策略可以有很多种。 比如，可以基于ACL（预设访问名单）STEP C 随机主机变换中的通过rIP通信就是这种；也可以是启发式的，通过行为判断（类似IPS）触发随机机制。</p>

<h1>0x03 结语</h1>

<hr />

<p>总而言之，用SDN构建出的网络是灵活的，目前华为等大厂商也逐渐在高端路线上考虑SDN路由器（尽管SDN路由器动辄上千，但是对于大型企业来说，安全和功能强大显然更加重要）</p>

<p>传统的静态网络已经走过从ARPNET到INTERNET走过了属于它的几十年，在绝大多数攻击模式都是针对静态内网的今天，拥有创新思维，化静为动地去思考如何保护内网显得尤为重要和关键。虽然SDN和MTD又都是走在前面的美国人所提出的，但从跟上脚步，也不失一种智慧，中国人的智慧。（我们不都是这么干的吗）</p>      </p>
    
			</body>
		</html>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          